package xyz.xiezc.spider.control;

import xyz.xiezc.spider.common.XBean;

import java.sql.SQLException;
import java.util.stream.Stream;

/**
 * @author wb-xzc291800
 * @date 2019/04/25 16:52
 */
public interface ScheduleCore {


    void dealFirstImg() throws SQLException;

    void dealSeeAndLike() throws SQLException;


    /**
     * 获得各个状态的队列中的信息.
     * 用于监控状态的
     *
     * @param status
     * @return
     */
    Stream<XBean> getQueueStream(int status);

    /**
     * 各个模块主动推送自己已经处理完成的XBean到调度器
     *
     * @param xBean
     * @return
     */
    boolean pushXBean(XBean xBean);


    /**
     * 异步的从调度器获得特定状态的bean, 如果没有则立即返回null, 不会阻塞
     *
     * @param statu 请求的XBean的状态
     * @return
     */
    XBean pullXBeanAsync(int statu);

    XBean repeat();

    void parse();

    void business();

    void download();
}
